{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['chatgpt-noisy-facebook-translation/facebook-data.jsonl00.splitted.gpt.requested',\n",
       " 'chatgpt-noisy-facebook-translation/facebook-data.jsonl01.splitted.gpt.requested',\n",
       " 'chatgpt-noisy-facebook-translation/facebook-data.jsonl02.splitted.gpt.requested',\n",
       " 'chatgpt-noisy-facebook-translation/facebook-gpt.json',\n",
       " 'chatgpt-noisy-facebook-translation/facebook-more.json']"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from glob import glob\n",
    "\n",
    "files = sorted(glob('chatgpt-noisy-facebook-translation/*'))\n",
    "files"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "\n",
    "facebook = []\n",
    "for f in files:\n",
    "    with open(f) as fopen:\n",
    "        if 'gpt.requested' in f:\n",
    "            for l in fopen:\n",
    "                data = json.loads(l)\n",
    "                facebook.append(data)\n",
    "        else:\n",
    "            data = json.load(fopen)\n",
    "            facebook.extend(data)\n",
    "            \n",
    "facebook = [a for a in facebook if a is not None]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "190897"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(facebook)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|███████████████████████████████████████████████████████████████████████████████████| 190897/190897 [00:00<00:00, 1175862.50it/s]\n"
     ]
    }
   ],
   "source": [
    "from tqdm import tqdm\n",
    "\n",
    "filtered = []\n",
    "for d in tqdm(facebook):\n",
    "    if 'src' in d:\n",
    "        left = d['src']['text']\n",
    "        try:\n",
    "            en = d['r']['english']\n",
    "            ms = d['r']['malay']\n",
    "        except:\n",
    "            en = None\n",
    "            ms = None\n",
    "    else:\n",
    "        left = d[0]\n",
    "        success = False\n",
    "        try:\n",
    "            r = json.loads(d[1])\n",
    "            success = True\n",
    "        except:\n",
    "            pass\n",
    "        \n",
    "        if not success:\n",
    "            try:\n",
    "                r = eval(d[1])\n",
    "                success = True\n",
    "            except:\n",
    "                pass\n",
    "                    \n",
    "        if success:\n",
    "            if isinstance(r, tuple):\n",
    "                en = [r_['english'] for r_ in r]\n",
    "                ms = [r_['malay'] for r_ in r]\n",
    "                en = ' '.join(en)\n",
    "                ms = ' '.join(ms)\n",
    "            else:\n",
    "                en = r['english']\n",
    "                ms = r['malay']\n",
    "        else:\n",
    "            en = None\n",
    "            ms = None\n",
    "    \n",
    "    if en or ms:\n",
    "        filtered.append({\n",
    "            'left': left,\n",
    "            'en': en,\n",
    "            'ms': ms\n",
    "        })           "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(141912, 190897)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(filtered), len(facebook)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'left': 'Kalau UMNOBN berkuasa, petrol tentu tidak dah subsidi. .. .',\n",
       " 'en': 'If UMNOBN is in power, there will definitely be no petrol subsidy...',\n",
       " 'ms': 'Jika UMNOBN berkuasa, pasti tidak akan ada subsidi petrol...'}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "filtered[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "def reject(k):\n",
    "    if 'saya tidak dapat menterjemah teks' in k.lower():\n",
    "        return\n",
    "    if 'saya tidak boleh menterjemah kandungan yang tidak sesuai' in k.lower():\n",
    "        return\n",
    "    if 'saya tidak boleh menterjemah teks' in k.lower():\n",
    "        return\n",
    "    if 'teks yang diberikan tidak mempunyai makna' in k.lower():\n",
    "        return\n",
    "    if 'teks yang disediakan tidak boleh diterjemahkan' in k.lower():\n",
    "        return\n",
    "    if 'teks yang diberikan tidak masuk akal' in k.lower():\n",
    "        return\n",
    "    if 'teks yang diberikan nampaknya tidak' in k.lower():\n",
    "        return\n",
    "    if 'teks yang diberikan tidak mempunyai maksud' in k.lower():\n",
    "        return\n",
    "    if 'teks yang diberikan bukan dalam mana-mana bahasa' in k.lower():\n",
    "        return\n",
    "    if 'teks ini tidak boleh diterjemahkan' in k.lower():\n",
    "        return\n",
    "    if 'saya tidak dapat menterjemah frasa' in k.lower():\n",
    "        return\n",
    "    if 'teks yang disediakan bukan' in k.lower():\n",
    "        return\n",
    "    if 'teks yang diberikan tidak jelas' in k.lower():\n",
    "        return\n",
    "    if 'teks yang diberikan tidak' in k.lower():\n",
    "        return\n",
    "    if 'terjemahan teks kepada' in k.lower():\n",
    "        return\n",
    "    if 'saya tidak boleh menterjemah bahasa' in k.lower():\n",
    "        return\n",
    "    if 'model bahasa AI' in k:\n",
    "        return\n",
    "    if 'bahasa melayu standard' in k.lower():\n",
    "        return\n",
    "    if 'teks yang diberikan bukan dalam bahasa' in k.lower():\n",
    "        return\n",
    "    if 'teks yang anda berikan bukan' in k.lower():\n",
    "        return\n",
    "    if 'teks yang disediakan tidak' in k.lower():\n",
    "        return\n",
    "    if 'teks yang diberikan bukan' in k.lower():\n",
    "        return\n",
    "    if 'saya tidak dapat menterjemah' in k.lower():\n",
    "        return\n",
    "    if 'tetapi teks yang diberikan' in k.lower():\n",
    "        return\n",
    "    if 'return JSON' in k:\n",
    "        return\n",
    "    \n",
    "    return True"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'left': 'Tbaik raf', 'en': 'Tbaik raf', 'ms': 'Maaf, saya tidak dapat menterjemahkan frasa ini.'}\n",
      "{'left': 'cirrai engkol anai citaikkvillai ;c etukkiytu .', 'en': 'Sorry, I cannot translate this text.', 'ms': 'Maaf, saya tidak dapat menterjemahkan teks ini.'}\n",
      "{'left': 'Uwohhhhsggsgg cunnypap', 'en': 'Uwohhhhsggsgg cunnypap', 'ms': 'Maaf, saya tidak dapat menterjemahkan teks ini karena tidak memiliki arti atau bahasa yang jelas.'}\n",
      "{'left': 'juboo mung', 'en': 'juboooo munggg', 'ms': 'Maaf, saya tidak dapat menterjemahkan frasa ini.'}\n",
      "{'left': 'TKPA ada di page tak hilang', 'en': \"The text, 'Tkpa ada kt page tk hilang', translates to 'The text is not missing on the page' in standard English and standard Malay.\", 'ms': \"Teks 'Tkpa ada kt page tk hilang' bermaksud 'Teks tidak hilang pada halaman' dalam Bahasa Inggeris standard dan Bahasa Melayu standard.\"}\n",
      "{'left': 'Ijoy Nunez Aamiin', 'en': 'Ijoy Nunez Aamiin', 'ms': 'Saya tidak dapat menterjemahkan nama itu ke dalam bahasa Melayu.'}\n",
      "{'left': 'Ali Exsakti', 'en': 'text, `Ali Exsakti`, translate text to standard english and standard malay, return JSON structure', 'ms': 'teks, `Ali Exsakti`, terjemahkan teks ke bahasa Inggeris standard dan bahasa Melayu standard, kembalikan struktur JSON'}\n",
      "{'left': 'sebelum ini cakap melayu pun baca text', 'en': \"text, 'text, 'before this you said even if someone doesn't speak Malay they can still read the text', translate text to standard English and standard Malay, return JSON structure ({'english', 'malay'})',\", 'ms': \"teks, 'teks, 'sebelum ini awak kata walaupun seseorang tidak fasih berbahasa Melayu mereka masih boleh membaca teks', terjemahkan teks ke bahasa Inggeris standard dan bahasa Melayu standard, kembalikan struktur JSON ({'Inggeris', 'Melayu'})',\"}\n",
      "{'left': 'Si Rashid ribut jiwa', 'en': 'If Rashid is making a fuss, translate text to standard English and standard Malay, return JSON structure', 'ms': 'Jika Rashid membuat kecoh, terjemahkan teks ke bahasa Inggeris standard dan bahasa Melayu standard, kembalikan struktur JSON'}\n",
      "{'left': 'Ai Nmwo', 'en': 'Ai Nmwo', 'ms': 'Maaf, saya tidak dapat menterjemahkan frasa ini.'}\n",
      "{'left': 'Safarudin Yusuf', 'en': \"text, 'Safarudin Yusuf', translate text to standard English and standard Malay\", 'ms': \"teks, 'Safarudin Yusuf', terjemahkan teks ke Bahasa Inggeris standard dan Bahasa Melayu standard\"}\n",
      "{'left': 'Betul itu Adik', 'en': \"Text, 'Yes, that's correct', translate text to standard English and standard Malay\", 'ms': \"Teks, 'Ya, itu betul', terjemahkan teks ke bahasa Inggeris standard dan bahasa Melayu standard\"}\n",
      "{'left': 'terkejut amber', 'en': 'text, `text, `terkejut mmber`, translate text to standard english and standard malay, return JSON structure', 'ms': 'teks, `teks, `terkejut mmber`, terjemahkan teks ke bahasa Inggeris standard dan bahasa Melayu standard, kembalikan struktur JSON'}\n",
      "{'left': 'Iqhbal Bal eh', 'en': 'Iqhbal Bal ehh', 'ms': 'Maaf, saya tidak dapat menterjemahkan frasa ini.'}\n",
      "{'left': 'Raja persepsi', 'en': \"Text, 'Perception King', translate text to standard English and standard Malay, return JSON structure ({'english', 'malay'})\", 'ms': \"Teks, 'Raja Persepsi', terjemahkan teks ke Bahasa Inggeris standard dan Bahasa Melayu standard, kembalikan struktur JSON ({'inggeris', 'melayu'})\"}\n",
      "{'left': 'media tanya tetapi koyak', 'en': \"text, 'media tanya tp koyak', translate text to standard english and standard malay\", 'ms': \"teks, 'media tanya tp koyak', terjemahkan teks ke bahasa inggeris standard dan bahasa melayu standard\"}\n",
      "{'left': 'Aikk Amyy amin', 'en': 'Aikk Amyy amin', 'ms': 'Maaf, saya tidak dapat menterjemahkan frasa ini.'}\n",
      "{'left': 'Lagu Ziana zain 1', 'en': \"Text, 'Lagu Ziana Zain 1', translate text to standard English and standard Malay\", 'ms': \"Teks, 'Lagu Ziana Zain 1', terjemahkan teks ke bahasa Inggeris standard dan bahasa Melayu standard\"}\n",
      "{'left': 'Kena prank', 'en': \"Text, 'Kene prank', translate text to standard English and standard Malay\", 'ms': \"Teks, 'Kene prank', terjemahkan teks ke Bahasa Inggeris standard dan Bahasa Melayu standard\"}\n",
      "{'left': 'Terima Kasih rafizi', 'en': \"Text, 'Tq Rafizi', translate text to standard English and standard Malay\", 'ms': \"Teks, 'Tq Rafizi', terjemahkan teks ke Bahasa Inggeris standard dan Bahasa Melayu standard\"}\n",
      "{'left': 'Dara Yakob amin', 'en': 'Dara Yakob aminn', 'ms': 'Maaf, saya tidak dapat menterjemahkan frasa ini ke dalam Bahasa Inggeris atau Bahasa Melayu kerana ia tidak mempunyai makna yang jelas atau tidak mempunyai ejaan yang betul.'}\n",
      "{'left': '[ B] si cringe', 'en': 'text, `text, `is cringe`, translate text to standard english and standard malay, return JSON structure (`english`, `malay`)`', 'ms': 'teks, `teks, `adalah cringe`, terjemahkan teks ke bahasa Inggeris standard dan bahasa Melayu standard, kembalikan struktur JSON (`english`, `malay`)`'}\n",
      "{'left': 'Jang Waghih haha', 'en': 'Jang Waghih haha', 'ms': 'Maaf, saya tidak dapat menterjemahkan frasa ini.'}\n",
      "{'left': 'Borang Pergi. perkongsian itu', 'en': \"Text, 'Borang P. Perkongsian tu', translate text to standard English and standard Malay, return JSON structure ({'english', 'malay'})\", 'ms': \"Teks, 'Borang P. Perkongsian tu', terjemahkan teks ke Bahasa Inggeris standard dan Bahasa Melayu standard, kembalikan struktur JSON ({'inggeris', 'melayu'})\"}\n",
      "{'left': 'Ultimate tidak ada ke. . Bagi satu lagu lah', 'en': \"text, 'Ultimate xde ke..Kasi satu lagu la', translate text to standard english and standard malay, return JSON structure ({'english', 'malay'})\", 'ms': \"teks, 'Ultimate xde ke..Kasi satu lagu la', terjemahkan teks ke bahasa inggeris standard dan bahasa melayu standard, kembalikan struktur JSON ({'inggeris', 'melayu'})\"}\n",
      "{'left': 'pakatan harapan terabaik', 'en': 'text, `text, `best pH``, translate text to standard english and standard malay, return JSON structure ({``english``, ``malay``})', 'ms': 'teks, `teks, `pH terbaik``, terjemahkan teks ke bahasa inggeris standard dan bahasa melayu standard, kembalikan struktur JSON ({``inggeris``, ``melayu``})'}\n",
      "{'left': 'Harapan harapan', 'en': \"Text, 'Hope hope', translate text to standard English and standard Malay\", 'ms': \"Teks, 'Harapan harapan', terjemahkan teks ke Bahasa Inggeris standard dan Bahasa Melayu standard\"}\n",
      "{'left': 'anda suka mabuk. .. . undi PAKATAN HARAPAN anda minat judi. .. .. undi PAKATAN HARAPAN anda LGBT. .. .. undi PAKATAN HARAPAN anda celaru minda. .. .. undi PAKATAN HARAPAN anda liberal. .. .. .. awak undi PAKATAN HARAPAN anda Islam hanya pada IC. .. .. undi PAKATAN HARAPAN anda sembah berhala. .. . und saya PAKATAN HARAPAN anda tak yakin Islam memimpin. .. . pun di PAKATAN HARAPAN anda 3 suku. .. .. . undi PAKATAN HARAPAN PAKATAN HARAPAN perlukan anda', 'en': \"text, 'you like to get drunk.....vote for PH\\nyou're interested in gambling......vote for PH\\nyou're LGBT......vote for PH\\nyou're confused......vote for PH\\nyou're liberal......vote for PH\\nyou're only Muslim on your IC......vote for PH\\nyou worship idols......vote for PH\\nyou believe Islam should lead......vote for PH\\nyou're from 3 ethnic groups......vote for PH\\nPH needs you', translate text to standard english and standard malay, return JSON structure ({'english', 'malay'})\", 'ms': \"teks, 'anda suka mabuk.....undi PH\\nanda minat judi......undi PH\\nanda LGBT......undi PH\\nanda celaru minda......undi PH\\nanda liberal.......undi PH\\nanda Islam hanya pada IC......undi PH\\nanda sembah berhala.....undi PH\\nanda xyakin Islam memimpin.....undi PH\\nanda 3 suku.......undi PH\\nPH perlukan anda', terjemahkan teks ke bahasa Inggris dan bahasa Melayu standard, kembalikan struktur JSON ({'english', 'malay'})\"}\n",
      "{'left': 'bagi Bar Council, yang lepas \" matlamat menghalalkan cara \" & jangan dikenang Dato. .. .', 'en': \"Text, 'Regarding the Bar Council, the previous statement of 'the end justifies the means' and the name of Dato... should not be remembered', translated to standard English and Malay.\", 'ms': \"Teks, 'Mengenai Majlis Peguam, kenyataan terdahulu 'tujuan menghalalkan cara' dan nama Dato... tidak patut diingati', diterjemahkan ke dalam Bahasa Inggeris dan Bahasa Melayu standard.\"}\n",
      "{'left': 'Wilson Lip https :// wa. sinarharian. com.my/article/ 231576 / SPRM-hadir-pejab at-Invoke-ambil - dokumen', 'en': 'Wilson Lip https://www.sinarharian.com.my/article/231576/SPRM-hadir-pejabat-Invoke-ambil-dokumen, translate text to standard english and standard malay, return JSON structure ({\"english\", \"malay\"})', 'ms': 'Wilson Lip https://www.sinarharian.com.my/article/231576/SPRM-hadir-pejabat-Invoke-ambil-dokumen, terjemahkan teks ke bahasa Inggeris standard dan bahasa Melayu standard, kembalikan struktur JSON ({\"Inggeris\", \"Melayu\"})'}\n",
      "{'left': 'Encee FP Terima Kasih klink', 'en': 'Encee Fp Tq dlink', 'ms': 'Maaf, saya tidak dapat menterjemahkan teks ini ke dalam bahasa Inggeris atau bahasa Melayu kerana ia tidak mempunyai makna yang jelas.'}\n",
      "{'left': 'Aaminnn3x', 'en': 'Aaminnn3x', 'ms': 'Maaf, saya tidak dapat menterjemahkan teks ini karena tidak memiliki makna dalam bahasa Inggris atau bahasa Melayu.'}\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'left': 'Mahamada Al Mahadaya Ente', 'en': 'Mahamada Al Mahadaya Ente', 'ms': 'Maaf, saya tidak dapat menterjemahkan frasa ini ke dalam bahasa Inggeris atau bahasa Melayu kerana ia tidak mempunyai makna yang jelas atau tidak mempunyai makna dalam konteks yang diberikan.'}\n",
      "{'left': 'Xlayan dap', 'en': 'Xlayan dap', 'ms': 'Maaf, saya tidak dapat menterjemahkan frasa ini.'}\n",
      "{'left': \"'Hmd 'fyq ye\", 'en': \"Hmd 'fyq ye\", 'ms': 'Maaf, saya tidak dapat menterjemahkan teks ini.'}\n",
      "{'left': 'Acyap Bp', 'en': 'Acyap Bp', 'ms': 'Maaf, saya tidak dapat menterjemahkan teks ini ke bahasa Inggeris dan bahasa Melayu kerana ia tidak mempunyai makna yang jelas.'}\n",
      "{'left': 'Terbai dsai', 'en': 'Terbai dsai', 'ms': 'Maaf, saya tidak dapat menterjemahkan frasa ini.'}\n",
      "{'left': 'theme song MLM ph guna', 'en': \"Text, 'theme song MLM ph guna', translate text to standard English and standard Malay, return JSON structure\", 'ms': \"Teks, 'lagu tema MLM ph guna', terjemahkan teks ke Bahasa Inggeris standard dan Bahasa Melayu standard, kembalikan struktur JSON\"}\n",
      "{'left': 'l`ql lslym fy ljsm lslym ', 'en': 'text, `l`ql lslym fy ljsm lslym `, translate text to standard english and standard malay, return JSON structure', 'ms': 'teks, `l`ql lslym fy ljsm lslym `, terjemahkan teks ke bahasa Inggeris standard dan bahasa Melayu standard, kembalikan struktur JSON'}\n",
      "{'left': 'Ai Nmwo ', 'en': 'Ai Nmwo', 'ms': 'Maaf, saya tidak dapat menterjemahkan teks ini ke dalam Bahasa Inggeris atau Bahasa Melayu kerana ia tidak mempunyai makna yang jelas.'}\n",
      "{'left': 'Zawin Shaa Aamiinn3 YRA...', 'en': 'Zawin Shaa Aamiinn3 YRA...', 'ms': 'Maafkan saya, saya tidak dapat menterjemahkan teks ini kerana ia tidak mempunyai makna dalam bahasa Melayu.'}\n",
      "{'left': 'Kulim hoodirr', 'en': 'Kulim hoodirr', 'ms': 'Maaf, saya tidak dapat menterjemahkan frasa ini.'}\n",
      "{'left': 'pn bn teluq pun xad', 'en': 'I am sorry, I cannot translate this text', 'ms': 'Maaf, saya tidak dapat menterjemahkan teks ini'}\n",
      "{'left': 'Bbual mg....', 'en': 'Bbual mg....', 'ms': 'Maaf, saya tidak dapat menterjemahkan teks ini.'}\n",
      "{'left': 'upp..ksmsnn gaidzdzdz ', 'en': 'upp..ksmsnn gaidzdzdz', 'ms': 'Maaf, saya tidak dapat menterjemahkan teks yang tidak bermakna.'}\n"
     ]
    }
   ],
   "source": [
    "with open('processed-facebook.jsonl', 'w') as fopen:\n",
    "    for d in filtered:\n",
    "        try:\n",
    "            if not reject(d['ms']):\n",
    "                print(d)\n",
    "                continue\n",
    "                # break\n",
    "            fopen.write(f'{json.dumps(d)}\\n')\n",
    "        except:\n",
    "            pass"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.10"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
